package com.ethink.warehouse.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ethink.warehouse.api.info.MateInventorySaleChannelChangeLogInfo;
import com.ethink.warehouse.api.info.MateInventorySaleChannelChangeLogModeInfo;
import com.ethink.warehouse.api.request.MateInventorySaleChannelChangeLogAddRequest;
import com.ethink.warehouse.api.request.MateInventorySaleChannelChangeLogQueryRequest;
import com.ethink.warehouse.api.request.MateInventorySaleChannelChangeLogUpdateRequest;
import com.ethink.warehouse.api.response.MateInventorySaleChannelChangeLogAddResponse;
import com.ethink.warehouse.api.response.MateInventorySaleChannelChangeLogDeleteResponse;
import com.ethink.warehouse.api.response.MateInventorySaleChannelChangeLogGetDetailResponse;
import com.ethink.warehouse.api.response.MateInventorySaleChannelChangeLogUpdateResponse;

/**
 * 库存货权变更 Service接口
 *
 * @author default
 * @date 2023-01-06
 */
public interface MateInventorySaleChannelChangeLogService {

    /**
     * 分页查询
     *
     * @param request
     * @return
     */
    Page<MateInventorySaleChannelChangeLogInfo> queryMateInventorySaleChannelChangeLog(MateInventorySaleChannelChangeLogQueryRequest request);

    /**
     * 查询详情
     *
     * @param mateInventorySaleChannelChangeLogId
     * @return
     */
    MateInventorySaleChannelChangeLogGetDetailResponse getMateInventorySaleChannelChangeLogById(Long mateInventorySaleChannelChangeLogId);

    /**
     * 新增
     *
     * @param request
     * @return
     */
    MateInventorySaleChannelChangeLogAddResponse addMateInventorySaleChannelChangeLog(MateInventorySaleChannelChangeLogAddRequest request);

    /**
     * 修改
     *
     * @param request
     * @return
     */
    MateInventorySaleChannelChangeLogUpdateResponse updateMateInventorySaleChannelChangeLog(MateInventorySaleChannelChangeLogUpdateRequest request);

    /**
     * 删除
     *
     * @param mateInventorySaleChannelChangeLogId
     * @return
     */
    MateInventorySaleChannelChangeLogDeleteResponse deleteMateInventorySaleChannelChangeLog(Long mateInventorySaleChannelChangeLogId);

    void approvedMateInventorySaleChannelChangeLog(Long id);

    void refuseMateInventorySaleChannelChangeLog(Long id);

    /**
     * 货权变更货品模式分页查询
     *
     * @param request
     * @return
     */
    Page<MateInventorySaleChannelChangeLogModeInfo> queryMateInventorySaleChannelChangeModeLog(MateInventorySaleChannelChangeLogQueryRequest request);
}